} DragMode;
/* Private part of the GtkHSV structure */
-typedef struct {
+struct _GtkHSVPriv
+{
/* Color value */
double h;
double s;
DragMode mode;
guint focus_on_ring : 1;
-
-} HSVPrivate;
+};
-\f
/* Signal IDs */
"move", 1,
G_TYPE_ENUM, GTK_DIR_LEFT);
- g_type_class_add_private (gobject_class, sizeof (HSVPrivate));
+ g_type_class_add_private (gobject_class, sizeof (GtkHSVPriv));
}
/* Object initialization function for the HSV color selector */
static void
gtk_hsv_init (GtkHSV *hsv)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE (hsv, GTK_TYPE_HSV, HSVPrivate);
+ priv = G_TYPE_INSTANCE_GET_PRIVATE (hsv, GTK_TYPE_HSV, GtkHSVPriv);
hsv->priv = priv;
static void
gtk_hsv_map (GtkWidget *widget)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
GTK_WIDGET_CLASS (gtk_hsv_parent_class)->map (widget);
static void
gtk_hsv_unmap (GtkWidget *widget)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
gdk_window_hide (priv->window);
static void
gtk_hsv_realize (GtkWidget *widget)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
+ GdkWindow *parent_window;
GdkWindowAttr attr;
int attr_mask;
- GdkWindow *parent_window;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+
gtk_widget_set_realized (widget, TRUE);
/* Create window */
static void
gtk_hsv_unrealize (GtkWidget *widget)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
+
gdk_window_set_user_data (priv->window, NULL);
gdk_window_destroy (priv->window);
priv->window = NULL;
GtkRequisition *requisition)
{
GtkHSV *hsv = GTK_HSV (widget);
- HSVPrivate *priv = hsv->priv;
+ GtkHSVPriv *priv = hsv->priv;
gint focus_width;
gint focus_pad;
gtk_hsv_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
+
widget->allocation = *allocation;
if (gtk_widget_get_realized (widget))
gint *vx,
gint *vy)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv = hsv->priv;
gdouble center_x;
gdouble center_y;
gdouble inner, outer;
gdouble angle;
- priv = hsv->priv;
-
center_x = GTK_WIDGET (hsv)->allocation.width / 2.0;
center_y = GTK_WIDGET (hsv)->allocation.height / 2.0;
outer = priv->size / 2.0;
gdouble x,
gdouble y)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv = hsv->priv;
gdouble dx, dy, dist;
gdouble center_x;
gdouble center_y;
gdouble inner, outer;
- priv = hsv->priv;
-
center_x = GTK_WIDGET (hsv)->allocation.width / 2.0;
center_y = GTK_WIDGET (hsv)->allocation.height / 2.0;
outer = priv->size / 2.0;
set_cross_grab (GtkHSV *hsv,
guint32 time)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv = hsv->priv;
GdkCursor *cursor;
-
- priv = hsv->priv;
-
+
cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (hsv)),
GDK_CROSSHAIR);
gdk_pointer_grab (priv->window, FALSE,
GdkEventGrabBroken *event)
{
GtkHSV *hsv = GTK_HSV (widget);
- HSVPrivate *priv;
-
- priv = hsv->priv;
-
+ GtkHSVPriv *priv = hsv->priv;
+
priv->mode = DRAG_NONE;
return TRUE;
gtk_hsv_button_press (GtkWidget *widget,
GdkEventButton *event)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
double x, y;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+
if (priv->mode != DRAG_NONE || event->button != 1)
return FALSE;
gtk_hsv_button_release (GtkWidget *widget,
GdkEventButton *event)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
DragMode mode;
gdouble x, y;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+
if (priv->mode == DRAG_NONE || event->button != 1)
return FALSE;
gtk_hsv_motion (GtkWidget *widget,
GdkEventMotion *event)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
- double x, y;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
GdkModifierType mods;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+ double x, y;
+
if (priv->mode == DRAG_NONE)
return FALSE;
gint width,
gint height)
{
+ GtkHSVPriv *priv = hsv->priv;
GtkWidget *widget = GTK_WIDGET (hsv);
- HSVPrivate *priv;
int xx, yy;
gdouble dx, dy, dist;
gdouble center_x;
gint width,
gint height)
{
+ GtkHSVPriv *priv = hsv->priv;
GtkWidget *widget = GTK_WIDGET (hsv);
- HSVPrivate *priv;
gint hx, hy, sx, sy, vx, vy; /* HSV vertices */
gint x1, y1, r1, g1, b1; /* First vertex in scanline order */
gint x2, y2, r2, g2, b2; /* Second vertex */
gtk_hsv_expose (GtkWidget *widget,
GdkEventExpose *event)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
GdkRectangle rect, dest;
cairo_t *cr;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
-
+
if (!(event->window == widget->window && gtk_widget_is_drawable (widget)))
return FALSE;
gtk_hsv_focus (GtkWidget *widget,
GtkDirectionType dir)
{
- GtkHSV *hsv;
- HSVPrivate *priv;
-
- hsv = GTK_HSV (widget);
- priv = hsv->priv;
+ GtkHSV *hsv = GTK_HSV (widget);
+ GtkHSVPriv *priv = hsv->priv;
if (!gtk_widget_has_focus (widget))
{
gdouble s,
gdouble v)
{
- HSVPrivate *priv;
-
+ GtkHSVPriv *priv;
+
g_return_if_fail (GTK_IS_HSV (hsv));
g_return_if_fail (h >= 0.0 && h <= 1.0);
g_return_if_fail (s >= 0.0 && s <= 1.0);
g_return_if_fail (v >= 0.0 && v <= 1.0);
-
+
priv = hsv->priv;
-
+
priv->h = h;
priv->s = s;
priv->v = v;
double *s,
double *v)
{
- HSVPrivate *priv;
-
+ GtkHSVPriv *priv = hsv->priv;
+
g_return_if_fail (GTK_IS_HSV (hsv));
-
+
priv = hsv->priv;
if (h)
gint size,
gint ring_width)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv = hsv->priv;
int same_size;
-
+
g_return_if_fail (GTK_IS_HSV (hsv));
g_return_if_fail (size > 0);
g_return_if_fail (ring_width > 0);
g_return_if_fail (2 * ring_width + 1 <= size);
-
+
priv = hsv->priv;
-
+
same_size = (priv->size == size);
priv->size = size;
gint *size,
gint *ring_width)
{
- HSVPrivate *priv;
-
+ GtkHSVPriv *priv = hsv->priv;
+
g_return_if_fail (GTK_IS_HSV (hsv));
-
+
priv = hsv->priv;
-
+
if (size)
*size = priv->size;
gboolean
gtk_hsv_is_adjusting (GtkHSV *hsv)
{
- HSVPrivate *priv;
-
+ GtkHSVPriv *priv = hsv->priv;
+
g_return_val_if_fail (GTK_IS_HSV (hsv), FALSE);
-
+
priv = hsv->priv;
return priv->mode != DRAG_NONE;
gtk_hsv_move (GtkHSV *hsv,
GtkDirectionType dir)
{
- HSVPrivate *priv;
+ GtkHSVPriv *priv = hsv->priv;
gdouble hue, sat, val;
gint hx, hy, sx, sy, vx, vy; /* HSV vertices */
gint x, y; /* position in triangle */
-
- priv = hsv->priv;
hue = priv->h;
sat = priv->s;